中介层(Middleware)

相当于filter, 在处理资料之前, 先过滤条件判断, 符合条件的再继续处理之后的http 请求

就像一个个blog, 使用者发表文章的时候一定要登入, 否则就会被导到登入页面(或者首页) ,提醒登录了再进行发表,跳转。 判断登入条件的部分就用middleware去实现

一般用PostgreSQL , 用Migration或者相关的DB 指令去存取PostgreSQL.

[lavarel 加载流程] (http://elickzhao.github.io/image/16-5/bootstrap.svg)

HTTP 核心也定义了一份 HTTP 中间件 清单,所有的请求在被应用程序处理之前都必须经过它们。这些中间件处理 HTTP session 的读写、验证 CSRF 令牌、决定应用程序是否处于维护模式,以及其它更多任务作。

所有服务提供者加载完毕后,把request请求转移给router路由器 经过router分派给route(路由)或者controller,并运行中间件处理后返回response(响应)

Auth 运作原理
通过 公共的auth模块验证不同的表中的用户

Auth::guard() 表示什么意思? 可以实现多组用户系统,比如前台,后台各有一组用户系统

Auth::check() 是判断用户是否登录的方法,如果使用的默认用户系统,那这样使用没问题。

但是使用两组用户的话,如何使用各组用户的功能呢? Auth::guard('users')->check() 就是用来判断前台用户是否登录,而 Auth::guard('admins')->check() 就是用来判断后台用户是否登录的。

一般来说,你的 auth.php 配置文件中,会配置一个default用户组,一般为users,则使用users组用户时候不用指定guard,而使用其他组用户时候,则需要使用guard来指定使用的哪组用户。

session ID , cookie 的区别和联系 具体来说cookie机制采用的是在客户端保持状态的方案。它是在用户端的会话状态的存贮机制,他需要用户打开客户端的cookie支持。cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力. 而session机制采用的是一种在客户端与服务器之间保持状态的解决方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的。而session提供了方便管理全局变量的方式 session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器。

就安全性来说:当你访问一个使用session 的站点,同时在自己机子上建立一个cookie,建议在服务器端的SESSION机制更安全些.因为它不会任意读取客户存储的信息。

cookie 和session 的区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE

4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。

5、所以个人建议: 将登陆信息等重要信息存放为SESSION 其他信息如果需要保留,可以放在COOKIE中

Auth 用户认证的原理

我们知道HTTP是无状态的处理,所以为了在不同的请求中维护用户会话(session)的状态人们想出了多种办法,比如常见的session的处理。常见的session的处理基本上有两种方式:

基于cookie的session处理方式 这种方式也是uliweb目前采用的方式。它首先在后台生成一个session对象,每个session对象有唯一的session_id。通过session_id可以找到对应的session对象。然后将用户的id保存到session对象中。而session_id则保存到cookie中。这样,利用session本身的机制,在用户访问页面时,首先识别出session信息,如果有,则再查找有没有用户id信息,然后取出用户对象并绑定到request.user属性上,供后续的处理来使用。如果session对象没找到或没有用户id的信息,则认为用户没有登录过,并绑定request.user为None。所以,这种方式,在前端只保留session_id的信息,利用session对象来处理用户登录的状态。而且用户登录的有效期是与session一致的。

results matching ""

    No results matching ""